#include "stdio.h" #include "graphics.h" #define ROUND(a) ((int)(a+0.5)) void lineDDA(); main() { int ax,bx,ay,by,driver,mode; /* initial value */ clrscr(); printf("Enter Number of xa: "); /* input start&end line */ scanf("%d",&ax); printf("Enter Number of ya: "); scanf("%d",&ay); printf("Enter Number of xb: "); scanf("%d",&bx); printf("Enter Number of yb: "); scanf("%d",&by); clrscr(); driver=VGA; /* set mode display */ mode=VGAHI; initgraph(&driver,&mode,""); gotoxy(300,0); /* show pont of start&end line */ printf("(x,y) Start:(%d,%d)",ax,ay); gotoxy(300,0); printf("(x,y) End:(%d,%d)",bx,by); lineDDA(ax,ay,bx,by); /* call function lineDDA */ getch(); } void lineDDA(int xa, int ya, int xb, int yb) { int dx = xb - xa, dy = yb - ya, steps, k; /* initial value */ float xIncrement, yIncrement, x = xa, y = ya; if (abs (dx) > abs (dy)) steps = abs (dx); /* เช็คค่าผลต่างของ X และ Y ถ้าใช่ steps = ค่า abs(dx) */ else steps = abs (dy); /* ถ้าไม่ ค่า steps = abs(dy) */ xIncrement = dx / (float) steps; /* ค่า xIncrement = dx หารด้วย steps */ yIncrement = dy / (float) steps; /* ค่า yIncrement = dy หารด้วย steps */ putpixel(x,y,15); /* แสดงผล ณ ตำแหน่ง x,y กำหนด */ for (k=0; k<steps;k++) { /* วนลูปเพื่อทำการแสดงผลจนถึงจุดสิ้นสุด */ x += xIncrement; /* เพิ่มค่า x += xIncrement */ y += yIncrement; /* เพิ่มค่า y += yIncrement */ putpixel(x,y,15); } }